<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
         // if (true) {
            //     let foo;
            //     let foo; // SyntaxError thrown.
            // }

            //错误情况2
            // let x = 1;
            // switch(x) {
            //作用范围============================
            //     case 0:
            //         let foo;
            //         break;
            //     case 1:
            //         let foo; // SyntaxError for redeclaration.
            //         break;
            //作用范围============================ 在一个块内有两个let变量重复声明 这是不正确的
            // }

            // //正确情况：然而，需要特别指出的是，一个嵌套在 case 子句中的块会创建一个新的块作用域的词法环境，就不会产生上诉重复声明的错误。
            // let x = 1;

            // switch(x) {
            //作用范围============================
            //     case 0: {
            //         let foo;
            //         break;
            //     }
            //作用范围============================ 这是正确的
            //     case 1: {
            //         let foo;
            //         break;
            //     }
            // }

            var a = 1;
            var b = 2;

            if (a === 1) {
                var a = 11; // the scope is global
                let b = 22; // the scope is inside the if-block

                console.log(a);  // 11
                console.log(b);  // 22
            }

            console.log(a); // 11
            console.log(b); // 2
    </script>
</head>
<body>
    
</body>
</html>